using System;

namespace SexpSharp.RPC
{
	internal interface IFoo
	{
		void method();
		int method1(int x);
		int method2(string x, object y);
		string method3(string x, int y, DateTime z);
		string methodbig(int x, int y, int z, int w, int v, int u, int a, int b, int c);
	}

	internal class SampleProxy : ProxyBase, IFoo
	{
		public SampleProxy(RPCClient client) : base(client) { }

		public void method()
		{
			object[] args = new object[0];
			InvokeRemote("method", null, args);
		}

		public int method1(int x)
		{
			object[] args = new object[1];
			args[0] = x;
			Type rt = typeof(int);
			return (int) InvokeRemote("method1", rt, args);
		}

		public int method2(string x, object y)
		{
			object[] args = new object[2];
			args[0] = x;
			args[1] = y;
			Type rt = typeof(int);
			return (int) InvokeRemote("method2", rt, args);
		}

		public string method3(string x, int y, DateTime z)
		{
			object[] args = new object[3];
			args[0] = x;
			args[1] = y;
			args[2] = z;
			Type rt = typeof(string);
			return (string) InvokeRemote("method3", rt, args);
		}

		public string methodbig(int x, int y, int z, int w, int v, int u, int a, int b, int c)
		{
			object[] args = new object[9];
			args[0] = x;
			args[1] = y;
			args[2] = z;
			args[3] = w;
			args[4] = v;
			args[5] = u;
			args[6] = a;
			args[7] = b;
			args[8] = c;
			Type rt = typeof(string);
			return (string) InvokeRemote("methodbig", rt, args);
		}
	}
}